slope <- map_dfr(rigal_trends,
  ~.x %>%
  select(siteid, linear_slope),
.id = "response"
)
slope_df <- slope %>%
  pivot_wider(names_from = "response", values_from = "linear_slope") 

0.1 Neutral difference

1 Rare species hypothesis

1.1 hypothesis

  • Knowing that high evenness and turnover trends happens where there are no trends in species richness

  • Turnover linked to shorted lived species
  • To highly abundant but stochastic species
  • Community that contains species more abundant globally have more turnover.
  • Community that contains species less occurent globally have more turnover. -> CWM(rarity)

2 Characterise variable species

  • Most abundant when present = average abundance
  • Rarely present = proportion occurence in sampling
sp_mean_abun <- filtered_dataset$measurement %>%
  left_join(filtered_dataset$site_quali, by = "siteid") %>%
  left_join(filtered_dataset$location, by = "siteid") %>%
  group_by(unitabundance, ecoregion, species) %>%
  summarise(summ =
    list(
      enframe(
        c(
          summary_distribution(abundance, na.rm = TRUE)
        )
      )
    )
    ) %>%
  unnest(cols = summ) %>%
  filter(name == c("mean")) %>%
  pivot_wider(names_from = "name", values_from = "value")
#> `summarise()` has grouped output by 'unitabundance', 'ecoregion'. You can override using the `.groups` argument.
species_fq <- filtered_dataset$measurement %>%
  left_join(filtered_dataset$site_quali, by = "siteid") %>%
  left_join(filtered_dataset$location, by = "siteid") %>%
  group_by(unitabundance, ecoregion, species) %>%
  summarise(fq = n()) %>%
  ungroup()
#> `summarise()` has grouped output by 'unitabundance', 'ecoregion'. You can override using the `.groups` argument.

op_fq <- filtered_dataset$measurement %>%
  left_join(filtered_dataset$site_quali, by = "siteid") %>%
  left_join(filtered_dataset$location, by = "siteid") %>%
  group_by(unitabundance, ecoregion) %>%
  summarise(n_op = n()) %>%
  ungroup()
#> `summarise()` has grouped output by 'unitabundance'. You can override using the `.groups` argument.

species_fq_op <- species_fq %>%
  left_join(op_fq, by = c("unitabundance", "ecoregion")) %>%
  mutate(occurence = fq / n_op) %>%
  select(-fq, -n_op) %>%
  ungroup()
ti <- ecdf(filtered_dataset$measurement$abundance)

get_proba_values_from_dist <- function(
  x = NULL,
  emp_pdf = NULL) {
  emp_pdf(x)
}
emp_pdf <- sp_mean_abun %>%
  group_by(unitabundance, ecoregion) %>%
  summarise(emp_pdf = list(ecdf(mean))) %>%
  ungroup()
#> `summarise()` has grouped output by 'unitabundance'. You can override using the `.groups` argument.
rarity_species <- sp_mean_abun %>%
  ungroup() %>%
  left_join(emp_pdf, by = c("unitabundance", "ecoregion")) %>%
  mutate(
    prob_abun = map2_dbl(mean, emp_pdf,
      ~get_proba_values_from_dist(x = .x, emp_pdf = .y))
    ) %>%
  left_join(species_fq_op, by = c("unitabundance", "ecoregion", "species")) %>%
  select(-emp_pdf)
rarity_species %>%
  ggplot(aes(y = prob_abun, x = log(occurence))) +
  geom_point()


rarity_species %>%
  ggplot(aes(x = prob_abun)) +
  geom_histogram()
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.


rarity_species %>%
  ggplot(aes(x = log(occurence))) +
  geom_histogram()
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

2.1 Occurrence

library(ecocom)
cwm_rarity <- filtered_dataset$measurement %>%
  left_join(select(filtered_dataset$site_quali, siteid, unitabundance), by = "siteid") %>%
  left_join(select(filtered_dataset$location, siteid, ecoregion), by = "siteid") %>%
  left_join(
    rarity_species,
    by = c("ecoregion", "unitabundance", "species")
    ) %>%
  group_by(op_id) %>%
  summarise(
    cwm_occurence = calc_cw_mean(
      trait = log(occurence),
      weight = abundance),
    cwm_prob_abun = calc_cw_mean(
      trait = prob_abun,
      weight = abundance
  )
    )
site_median_cwm_rarity <- cwm_rarity %>%
  left_join(select(filtered_dataset$measurement, siteid, op_id), by = "op_id") %>%
group_by(siteid) %>%
  summarise(across(where(is.double), median))
slope_df_rarity <- slope_df %>%
  left_join(site_median_cwm_rarity, by = "siteid")
slope_df_rarity %>%
  ggplot(aes(
      x = cwm_occurence,
      y = jaccard,
      color = cwm_prob_abun
      )) +
  scale_color_viridis() +
  geom_point() +
  geom_smooth(method = "gam")
#> `geom_smooth()` using formula 'y ~ s(x, bs = "cs")'


slope_df_rarity %>%
  ggplot(aes(
      x = cwm_prob_abun,
      y = jaccard,
      color = cwm_occurence
      )) +
  scale_color_viridis() +
  geom_point() +
  geom_smooth(method = "gam")
#> `geom_smooth()` using formula 'y ~ s(x, bs = "cs")'

tar_load(com_mat_site)

stab_sync <- com_mat_site %>%
  mutate(
    richness = purrr::map(mat, compute_sp_nb_from_com_mat),
    richness_med = purrr::map_dbl(richness, median),
    avg_sp = purrr::map(mat, colMeans),
    cov_mat = purrr::map(mat, cov),
    var_sp = purrr::map(cov_mat, diag),
    synchrony = purrr::map_dbl(cov_mat, compute_synchrony),
    cv_sp = purrr::map2_dbl(avg_sp, var_sp, compute_avg_cv_sp),
    cv_com = compute_cv_com(synchrony = synchrony, cv_sp = cv_sp),
    cv_classic = purrr::map2_dbl(cov_mat, mat, function(variance, abundance) {
      sqrt(sum(variance)) / mean(rowSums(abundance))
      })
  ) %>%
select(-starts_with("mat"))
stab_sync %>%
  ggplot(aes(y = 1/cv_com, x = richness_med)) +
  geom_point() +
  geom_smooth(method = "lm")
#> `geom_smooth()` using formula 'y ~ x'
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).


stab_sync %>%
  ggplot(aes(y = synchrony, x = log(richness_med))) +
  geom_point() +
  geom_smooth(method = "lm")
#> `geom_smooth()` using formula 'y ~ x'


stab_sync %>%
  ggplot(aes(y = cv_sp, x = richness_med)) +
  geom_point() +
  geom_smooth(method = "lm")
#> `geom_smooth()` using formula 'y ~ x'

slope_df_stab <- slope_df %>%
  left_join(stab_sync, by = "siteid")
slope_df_stab %>%
  ggplot(aes(y = jaccard, x = cv_sp)) +
  geom_point()

slope_df_stab %>%
  ggplot(aes(y = jaccard, x = synchrony)) +
  geom_point()

slope_df_stab %>%
  ggplot(aes(y = jaccard, x = 1 / cv_com)) +
  geom_point()

3 PCAAAAAAAAAAAAAAAAAAAAAA

library(ade4)
library(factoextra)
#> Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
res.pca <- dudi.pca(select(slope_df, -siteid),
  scannf = FALSE,   # Hide scree plot
  nf = 5            # Number of components kept in the results
)
fviz_eig(res.pca)

p_pca <- map(list(c(1,2), c(2, 3), c(1, 3)),
  ~fviz_pca_var(res.pca,
    axes = .x,
    col.var = "contrib", # Color by contributions to the PC
    gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
    repel = TRUE     # Avoid text overlapping
    ) +
  theme(legend.position = "none") + labs(title = "")
)

plot_grid(plotlist = p_pca, ncol = 1)
#> Warning: ggrepel: 8 unlabeled data points (too many overlaps). Consider
#> increasing max.overlaps

median_site <- analysis_dataset %>%
  select(
    siteid,
    starts_with("chao_"),
    evenness,
    total_abundance
  ) %>%
  group_by(siteid) %>%
  summarise(across(where(is.double), median, na.rm =TRUE)) %>%
  rename_with(~paste0("med_", .x), where(is.double)) %>%
  left_join(site_median_cwm_rarity, by = "siteid") %>%
  left_join(select(stab_sync, siteid, cv_com, synchrony, cv_sp), by = "siteid") %>%
  left_join(select(slope_df, siteid, hillebrand, jaccard, total), by = "siteid")
pca_turnover <- dudi.pca(
  select(na.omit(median_site), -siteid),
  scannf = FALSE,   # Hide scree plot
  nf = 5            # Number of components kept in the results
)
fviz_eig(pca_turnover)

p_1_2 <- fviz_pca_var(pca_turnover,
  col.var = "contrib", # Color by contributions to the PC
  gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
  repel = TRUE     # Avoid text overlapping
)
p_1_2

3.1 Jaccard distrribution vs classification_station

slope_classification_station <- map_dfr(
  rigal_trends,
  ~.x %>%
    select(siteid, linear_slope, shape_class, direction),
  .id = "response"
)
get_shape_class_x_trends_y <- function(dataset = NULL, x = NULL, y = NULL,
  type = "shape_class") {

  trends <- dataset %>%
    filter(response == y) %>%
    select(all_of(c("siteid", "linear_slope")))

  shape <- dataset %>%
    filter(response == x) %>%
    select(all_of(c("siteid", type)))

  output <- trends %>%
    left_join(shape, by = "siteid")
  return(output)
}
boxplot_trends_shape <- function(
dataset = NULL, x = NULL, y = NULL, type = "shape_class",
geom_fun = geom_boxplot
) {
  give.n <- function(x){
    return(c(y = median(x)*1.25, label = length(x))) 
    # experiment with the multiplier to find the perfect position
}

  get_shape_class_x_trends_y(
    dataset = slope_classification_station,
    x = x,
    y = y,
    type = type 
    ) %>%
  ggplot(aes_string(x = type, y = "linear_slope")) +
  geom_fun() +
  labs(y = paste0("Trends of ", y), x = paste0("Classification of ", x)) +
  stat_summary(fun.data = give.n, geom = "text", fun = median, 
    position = position_dodge(width = 0.75)) +
  theme(axis.text.x = element_text(angle = 30, hjust = 1))

}
get_shape_class_x_trends_y(
  dataset = slope_classification_station,
  x = "total_abundance",
  y = "jaccard"
) %>%
  ggplot(aes(x = shape_class, y = linear_slope)) +
  geom_boxplot()

boxplot_trends_shape(
  dataset = slope_classification_station,
  x = "total_abundance",
  y = "jaccard",
  type = "direction"
)

boxplot_trends_shape(
  dataset = slope_classification_station,
  x = "species_nb",
  y = "total",
  type = "direction"
)

3.1.1 Hillebrand

3.1.1.1 Species richness

p <- map(c("hillebrand", "total"),
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "species_nb",
  y = .x,
  type = "shape_class"
))

plot_grid(plotlist = p)

p <- map(c("hillebrand", "total"),
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "species_nb",
  y = .x,
  type = "direction"
))

plot_grid(plotlist = p)

3.1.1.2 Total abundance

p <- map(c("hillebrand", "total"),
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "total_abundance",
  y = .x,
  type = "shape_class"
))

plot_grid(plotlist = p)

p <- map(c("hillebrand", "total"),
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "total_abundance",
  y = .x,
  type = "direction"
))

plot_grid(plotlist = p)

3.1.2 Baselga

3.1.2.1 Species richness

p <- map(c("nestedness", "turnover", "jaccard_dis"),
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "species_nb",
  y = .x,
  type = "shape_class"
))

plot_grid(plotlist = p)

p <- map(c("nestedness", "turnover", "jaccard_dis"),
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "species_nb",
  y = .x,
  type = "direction"
))

plot_grid(plotlist = p)

3.1.2.2 Total abundance

p <- map(c("nestedness", "turnover", "jaccard_dis"),
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "total_abundance",
  y = .x,
  type = "direction"
))

plot_grid(plotlist = p)

p <- map(c("nestedness", "turnover", "jaccard_dis"),
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "total_abundance",
  y = .x,
  type = "shape_class"
))

plot_grid(plotlist = p)

3.1.3 Jaccard

3.1.3.1 Species richness

boxplot_trends_shape(
  dataset = slope_classification_station,
  x = "species_nb",
  y = "jaccard",
  type = "direction"
)

boxplot_trends_shape(
  dataset = slope_classification_station,
  x = "species_nb",
  y = "jaccard",
  type = "shape_class"
)

3.1.3.2 Total abundance

boxplot_trends_shape(
  dataset = slope_classification_station,
  x = "total_abundance",
  y = "jaccard",
  type = "direction"
)

boxplot_trends_shape(
  dataset = slope_classification_station,
  x = "total_abundance",
  y = "jaccard",
  type = "shape_class"
)

p <- map(c("nestedness", "turnover", "jaccard_dis"),
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "species_nb",
  y = .x,
  type = "shape_class"
))

plot_grid(plotlist = p)

3.1.4 Total turnover, appearance, disappearance

var_y <- c("total", "appearance", "disappearance")
p <- map(var_y,
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "species_nb",
  y = .x,
  type = "direction"
))

plot_grid(plotlist = p)

p <- map(var_y,
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "species_nb",
  y = .x,
  type = "shape_class"
))

plot_grid(plotlist = p)

3.1.4.1 Total abundance

p <- map(var_y,
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "total_abundance",
  y = .x,
  type = "direction"
))

plot_grid(plotlist = p)

p <- map(var_y,
  ~boxplot_trends_shape( dataset =
    slope_classification_station,
  x = "total_abundance",
  y = .x,
  type = "shape_class"
))

plot_grid(plotlist = p)

4 In stable richness

stable_rich_siteid <- slope_classification_station %>%
  filter(response == "species_nb", direction == "stable") %>%
  .[["siteid"]]
high_jaccard_slope <-
  slope_df %>%
  filter(siteid %in% stable_rich_siteid) %>%
  select(siteid, total_abundance, species_nb, jaccard) %>%
  arrange(desc(jaccard))

site_desc_jaccard_slope <-
  high_jaccard_slope %>%
  .[["siteid"]]
p_high_jaccard_slope <- map(site_desc_jaccard_slope[1:20],
  ~plot_community_data(
    analysis_dataset %>%
    filter(siteid == .x) %>%
    select(siteid, year, jaccard),
    y = "jaccard", x = "year",
  smoothing_method = "lm"))
plot_grid(plotlist = p_high_jaccard_slope, ncol = 3)
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).

p_pop_high_jaccard <-
  map(site_desc_jaccard_slope[1:20],
    ~plot_temporal_population(
      filtered_dataset$measurement %>%
        filter(siteid == .x)
      ) +
    theme(legend.position = "none")
    )
plot_grid(plotlist = p_pop_high_jaccard, ncol = 3)
#> Warning: Removed 115 rows containing missing values (position_stack).
#> Warning: Removed 63 rows containing missing values (position_stack).
#> Warning: Removed 125 rows containing missing values (position_stack).
#> Warning: Removed 28 rows containing missing values (position_stack).
#> Warning: Removed 56 rows containing missing values (position_stack).
#> Warning: Removed 35 rows containing missing values (position_stack).
#> Warning: Removed 52 rows containing missing values (position_stack).
#> Warning: Removed 85 rows containing missing values (position_stack).
#> Warning: Removed 32 rows containing missing values (position_stack).
#> Warning: Removed 102 rows containing missing values (position_stack).
#> Warning: Removed 28 rows containing missing values (position_stack).
#> Warning: Removed 42 rows containing missing values (position_stack).
#> Warning: Removed 54 rows containing missing values (position_stack).
#> Warning: Removed 60 rows containing missing values (position_stack).
#> Warning: Removed 12 rows containing missing values (position_stack).
#> Warning: Removed 56 rows containing missing values (position_stack).
#> Warning: Removed 95 rows containing missing values (position_stack).
#> Warning: Removed 68 rows containing missing values (position_stack).
#> Warning: Removed 12 rows containing missing values (position_stack).
#> Warning: Removed 21 rows containing missing values (position_stack).

p_turnover_high_jaccard_slope <- map(site_desc_jaccard_slope[1:20],
  ~plot_community_data(
    analysis_dataset %>%
    filter(siteid == .x) %>%
    select(siteid, year, turnover),
    y = "turnover", x = "year",
  smoothing_method = "lm"))
plot_grid(plotlist = p_turnover_high_jaccard_slope, ncol = 3)
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).

p_nestedness_high_jaccard_slope <- map(site_desc_jaccard_slope[1:20],
  ~plot_community_data(
    analysis_dataset %>%
    filter(siteid == .x) %>%
    select(siteid, year, nestedness),
    y = "nestedness", x = "year",
  smoothing_method = "lm"))
plot_grid(plotlist = p_nestedness_high_jaccard_slope, ncol = 3)
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).

p_appearance_high_jaccard_slope <- map(site_desc_jaccard_slope[1:20],
  ~plot_community_data(
    analysis_dataset %>%
    filter(siteid == .x) %>%
    select(siteid, year, appearance),
    y = "appearance", x = "year",
  smoothing_method = "lm"))
plot_grid(plotlist = p_appearance_high_jaccard_slope, ncol = 3)
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).

p_disappearance_high_jaccard_slope <- map(site_desc_jaccard_slope[1:20],
  ~plot_community_data(
    analysis_dataset %>%
    filter(siteid == .x) %>%
    select(siteid, year, disappearance),
    y = "disappearance", x = "year",
  smoothing_method = "lm"))
plot_grid(plotlist = p_disappearance_high_jaccard_slope, ncol = 3)
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).

diff_baseline <- analysis_dataset %>%
    group_by(siteid) %>%
    arrange(year) %>%
    summarise(
      diff_baseline = year[2] - year[1],
      span = year[length(year)] - year[1] + 1
    )
slope_df %>%
  left_join(diff_baseline, by = "siteid") %>%
  ggplot(aes(x = diff_baseline, y = jaccard)) +
  geom_point() +
  geom_smooth(method = "gam")
#> `geom_smooth()` using formula 'y ~ s(x, bs = "cs")'

slope_df %>%
  left_join(diff_baseline, by = "siteid") %>%
  ggplot(aes(x = span, y = jaccard)) +
  geom_point() +
  geom_smooth(method = "gam")
#> `geom_smooth()` using formula 'y ~ s(x, bs = "cs")'

  • Lets see communities that becomes more dissimilar:
p_jaccard_low_jaccard <-
  map(site_desc_jaccard_slope[(length(site_desc_jaccard_slope)-20):length(site_desc_jaccard_slope)],
    ~plot_community_data(
      analysis_dataset %>%
        filter(siteid == .x) %>%
        select(siteid, year, jaccard),
      y = "jaccard", x = "year",
      smoothing_method = "lm"))
plot_grid(plotlist = p_jaccard_low_jaccard, ncol = 3)
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).

p_pop_low_jaccard <-
  map(site_desc_jaccard_slope[
    (length(site_desc_jaccard_slope)-20):length(site_desc_jaccard_slope)],
    ~plot_temporal_population(
      filtered_dataset$measurement %>%
        filter(siteid == .x)
      ) +
    theme(legend.position = "none")
    )
plot_grid(plotlist = p_pop_low_jaccard, ncol = 3)
#> Warning: Removed 45 rows containing missing values (position_stack).
#> Warning: Removed 9 rows containing missing values (position_stack).
#> Warning: Removed 48 rows containing missing values (position_stack).
#> Warning: Removed 18 rows containing missing values (position_stack).
#> Warning: Removed 24 rows containing missing values (position_stack).
#> Warning: Removed 18 rows containing missing values (position_stack).

#> Warning: Removed 18 rows containing missing values (position_stack).
#> Warning: Removed 100 rows containing missing values (position_stack).
#> Warning: Removed 12 rows containing missing values (position_stack).
#> Warning: Removed 33 rows containing missing values (position_stack).
#> Warning: Removed 20 rows containing missing values (position_stack).
#> Warning: Removed 48 rows containing missing values (position_stack).
#> Warning: Removed 25 rows containing missing values (position_stack).
#> Warning: Removed 96 rows containing missing values (position_stack).
#> Warning: Removed 12 rows containing missing values (position_stack).
#> Warning: Removed 36 rows containing missing values (position_stack).
#> Warning: Removed 91 rows containing missing values (position_stack).
#> Warning: Removed 105 rows containing missing values (position_stack).
#> Warning: Removed 24 rows containing missing values (position_stack).
#> Warning: Removed 20 rows containing missing values (position_stack).

p_turnover_low_jaccard_slope <- map(site_desc_jaccard_slope[(length(site_desc_jaccard_slope)-20):length(site_desc_jaccard_slope)],
  ~plot_community_data(
    analysis_dataset %>%
    filter(siteid == .x) %>%
    select(siteid, year, turnover),
    y = "turnover", x = "year",
  smoothing_method = "lm"))
plot_grid(plotlist = p_turnover_low_jaccard_slope, ncol = 3)
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).

p_nestedness_low_jaccard_slope <- map(site_desc_jaccard_slope[(length(site_desc_jaccard_slope)-20):length(site_desc_jaccard_slope)],
  ~plot_community_data(
    analysis_dataset %>%
    filter(siteid == .x) %>%
    select(siteid, year, nestedness),
    y = "nestedness", x = "year",
  smoothing_method = "lm"))
plot_grid(plotlist = p_nestedness_low_jaccard_slope, ncol = 3)
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).

p_appearance_low_jaccard_slope <- map(site_desc_jaccard_slope[(length(site_desc_jaccard_slope)-20):length(site_desc_jaccard_slope)],
  ~plot_community_data(
    analysis_dataset %>%
    filter(siteid == .x) %>%
    select(siteid, year, appearance),
    y = "appearance", x = "year",
  smoothing_method = "lm"))
plot_grid(plotlist = p_appearance_low_jaccard_slope, ncol = 3)
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).

p_disappearance_low_jaccard_slope <- map(site_desc_jaccard_slope[(length(site_desc_jaccard_slope)-20):length(site_desc_jaccard_slope)],
  ~plot_community_data(
    analysis_dataset %>%
    filter(siteid == .x) %>%
    select(siteid, year, disappearance),
    y = "disappearance", x = "year",
  smoothing_method = "lm"))
plot_grid(plotlist = p_disappearance_low_jaccard_slope, ncol = 3)
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).
#> Warning: Removed 1 rows containing non-finite values (stat_smooth).
#> Warning: Removed 1 rows containing missing values (geom_point).

4.1 Turnover and nestedness

stable_rich_slope <- slope_classification_station %>%
  filter(siteid %in% stable_rich_siteid) %>%
select(response, siteid, linear_slope) %>%
pivot_wider(names_from = "response", values_from = "linear_slope") %>%
mutate(
  turn_minus_nest = turnover - nestedness,
  turn_sup_0 = turnover > 0,
  nest_sup_0 = nestedness > 0,
  turn_sup_nest = turnover > nestedness,
  appearance_sup_disappearance = appearance > disappearance,
  jaccard_sup_0 = jaccard > 0,
  richness_sup_0 = species_nb > 0 
  )

4.1.1 Blowes et al. (2019)

ti <- table(stable_rich_slope$richness_sup_0, stable_rich_slope$turn_sup_0,
  dnn = list("richness > 0", "turnover > 0"))
ti
#>             turnover > 0
#> richness > 0 FALSE TRUE
#>        FALSE  1115 1015
#>        TRUE   1340 1001
ti <- table(stable_rich_slope$richness_sup_0, stable_rich_slope$nest_sup_0,
  dnn = list("richness > 0", "nestedness > 0"))
ti
#>             nestedness > 0
#> richness > 0 FALSE TRUE
#>        FALSE  1217  913
#>        TRUE   1193 1148
sum(stable_rich_slope$jaccard_sup_0)
#> [1] 1619
ti <- table(stable_rich_slope$jaccard_sup_0, stable_rich_slope$turn_sup_nest,
  dnn = list("jaccard > 0", "turnover > nestedness"))
ti
#>            turnover > nestedness
#> jaccard > 0 FALSE TRUE
#>       FALSE  1309 1543
#>       TRUE    701  918
ti <- table(stable_rich_slope$jaccard_sup_0,
  stable_rich_slope$appearance_sup_disappearance,
  dnn = list("jaccard > 0", "appearance > disappearance"))
ti
#>            appearance > disappearance
#> jaccard > 0 FALSE TRUE
#>       FALSE  1429 1423
#>       TRUE    843  776
stable_rich_slope %>%
pivot_longer(-siteid, names_to = "response", values_to = "linear_slope") %>%
filter(response %in% c("jaccard_dis", "turnover", "nestedness", "turn_minus_nest")) %>%
select(response, siteid, linear_slope) %>%
ggplot(aes(x = response, y = linear_slope)) +
geom_boxplot()

5 Classification matrix

#debugonce(get_matrix_classification)
get_matrix_classification <- function(dataset = NULL, x = NULL, y = NULL) {
  ti <- dataset %>%
    filter(response %in% c(x, y)) %>%
    select(siteid, response, shape_class) %>%
    pivot_wider(names_from = "response", values_from = "shape_class")

  table(
    ti[[x]],
    ti[[y]]
  )
}
ti <- get_matrix_classification(
  dataset = slope_classification_station,
  x = "species_nb",
  y = "hillebrand"
  )

corrplot::corrplot(as.matrix(ti) / rowSums(ti))

5.1 Analysis

5.2 Reproducibility

Reproducibility receipt

## datetime
Sys.time()
#> [1] "2022-01-21 16:54:55 CST"

## repository
if(requireNamespace('git2r', quietly = TRUE)) {
  git2r::repository()
} else {
  c(
    system2("git", args = c("log", "--name-status", "-1"), stdout = TRUE),
    system2("git", args = c("remote", "-v"), stdout = TRUE)
  )
}
#> Local:    main /home/alain/Documents/post-these/isu/RivFishTimeBiodiversityFacets
#> Head:     [ff145f8] 2022-01-21: ignore figures

## session info
sessionInfo()
#> R version 4.0.5 (2021-03-31)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Debian GNU/Linux 10 (buster)
#> 
#> Matrix products: default
#> BLAS:   /home/alain/.Renv/versions/4.0.5/lib/R/lib/libRblas.so
#> LAPACK: /home/alain/.Renv/versions/4.0.5/lib/R/lib/libRlapack.so
#> 
#> locale:
#>  [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C              
#>  [3] LC_TIME=fr_FR.UTF-8        LC_COLLATE=fr_FR.UTF-8    
#>  [5] LC_MONETARY=fr_FR.UTF-8    LC_MESSAGES=fr_FR.UTF-8   
#>  [7] LC_PAPER=fr_FR.UTF-8       LC_NAME=C                 
#>  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
#> [11] LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C       
#> 
#> attached base packages:
#> [1] parallel  stats     graphics  grDevices utils     datasets  methods  
#> [8] base     
#> 
#> other attached packages:
#>  [1] factoextra_1.0.7        ade4_1.7-16             ecocom_0.0.0.9000      
#>  [4] inlabru_2.3.1           INLA_21.11.22           sp_1.4-5               
#>  [7] foreach_1.5.1           Matrix_1.3-2            leafpop_0.1.0          
#> [10] mapview_2.10.0          future_1.21.0           vegan_2.5-7            
#> [13] lattice_0.20-41         permute_0.9-5           codyn_2.0.5            
#> [16] janitor_2.1.0           viridis_0.5.1           viridisLite_0.3.0      
#> [19] cowplot_1.1.1           rnaturalearthdata_0.1.0 rnaturalearth_0.1.0    
#> [22] sf_1.0-4                rmarkdown_2.11          scales_1.1.1           
#> [25] kableExtra_1.3.1        here_1.0.1              lubridate_1.7.9.2      
#> [28] magrittr_2.0.1          forcats_0.5.1           stringr_1.4.0          
#> [31] dplyr_1.0.4             purrr_0.3.4             readr_2.1.1            
#> [34] tidyr_1.1.2             tibble_3.1.6            ggplot2_3.3.3          
#> [37] tidyverse_1.3.0         tarchetypes_0.3.2       targets_0.8.1          
#> [40] conflicted_1.1.0       
#> 
#> loaded via a namespace (and not attached):
#>   [1] readxl_1.3.1            uuid_1.0-3              backports_1.2.1        
#>   [4] corrplot_0.84           systemfonts_1.0.0       igraph_1.2.6           
#>   [7] splines_4.0.5           crosstalk_1.1.1         listenv_0.8.0          
#>  [10] leaflet_2.0.4.1         digest_0.6.27           htmltools_0.5.1.1      
#>  [13] leaflet.providers_1.9.0 fansi_0.5.0             memoise_2.0.0          
#>  [16] cluster_2.1.1           openxlsx_4.2.3          tzdb_0.2.0             
#>  [19] globals_0.14.0          modelr_0.1.8            svglite_2.0.0          
#>  [22] prettyunits_1.1.1       colorspace_2.0-0        rvest_0.3.6            
#>  [25] ggrepel_0.9.1           rgdal_1.5-28            haven_2.3.1            
#>  [28] xfun_0.28               leafem_0.1.6            callr_3.7.0            
#>  [31] crayon_1.4.2            jsonlite_1.7.2          brew_1.0-6             
#>  [34] iterators_1.0.13        glue_1.5.1              gtable_0.3.0           
#>  [37] webshot_0.5.2           car_3.0-10              abind_1.4-5            
#>  [40] DBI_1.1.1               rstatix_0.7.0           Rcpp_1.0.6             
#>  [43] progress_1.2.2          units_0.6-7             foreign_0.8-81         
#>  [46] stats4_4.0.5            htmlwidgets_1.5.3       httr_1.4.2             
#>  [49] wk_0.5.0                ellipsis_0.3.2          pkgconfig_2.0.3        
#>  [52] farver_2.0.3            sass_0.3.1              dbplyr_2.1.0           
#>  [55] utf8_1.2.2              tidyselect_1.1.1        labeling_0.4.2         
#>  [58] rlang_0.4.12            munsell_0.5.0           cellranger_1.1.0       
#>  [61] tools_4.0.5             cachem_1.0.4            cli_3.1.0              
#>  [64] generics_0.1.0          broom_0.7.4             evaluate_0.14          
#>  [67] fastmap_1.1.0           yaml_2.2.1              processx_3.5.2         
#>  [70] knitr_1.36              fs_1.5.1                zip_2.1.1              
#>  [73] s2_1.0.7                satellite_1.0.4         nlme_3.1-152           
#>  [76] xml2_1.3.2              compiler_4.0.5          rstudioapi_0.13        
#>  [79] curl_4.3.2              png_0.1-7               ggsignif_0.6.1         
#>  [82] e1071_1.7-4             reprex_1.0.0            bslib_0.2.4            
#>  [85] stringi_1.7.6           highr_0.9               ps_1.6.0               
#>  [88] rgeos_0.5-5             classInt_0.4-3          vctrs_0.3.8            
#>  [91] pillar_1.6.4            lifecycle_1.0.1         furrr_0.2.2            
#>  [94] jquerylib_0.1.3         data.table_1.13.6       raster_3.5-9           
#>  [97] R6_2.5.1                bookdown_0.24           rio_0.5.16             
#> [100] KernSmooth_2.23-18      gridExtra_2.3           parallelly_1.23.0      
#> [103] codetools_0.2-18        MASS_7.3-53.1           assertthat_0.2.1       
#> [106] rprojroot_2.0.2         withr_2.4.3             mgcv_1.8-34            
#> [109] hms_1.1.1               terra_1.4-22            grid_4.0.5             
#> [112] class_7.3-18            snakecase_0.11.0        carData_3.0-4          
#> [115] ggpubr_0.4.0            git2r_0.29.0            base64enc_0.1-3